<?php

namespace CHOMP\SGIBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Entity(repositoryClass="CHOMP\SGIBundle\Entity\ComentarioRepository")
 * @ORM\Table(name="comentario")
 */
class Comentario
{
    /**
	 * @ORM\Id
     * @ORM\Column(name="id", type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(name="comentario", type="string", length=2048, nullable=false)
	 * @Assert\NotNull(message = "El campo no puede estar en blanco.")
	 * @Assert\NotBlank(
	 *       message = "El comentario no puede estar vacío."
	 *		)
	 * @Assert\Length(
     *      min = "4",
     *      max = "2048",
	 *      minMessage = "El nombre debe tener al menos {{ limit }} caracteres.",
     *      maxMessage = "El nombre debe tener {{ limit }} caracteres como máximo."
	 *		)
     */
    private $comentario;

    /**
     * @ORM\Column(type="datetime", nullable=false)
	 * @Assert\NotNull(message = "El campo no puede estar en blanco.")
     */
    private $fechaCreacion;

	/**
     * @ORM\ManyToOne(targetEntity="Usuario")
     * @ORM\JoinColumn(name="usuario_id", referencedColumnName="id", nullable=false)
	 * @Assert\NotNull(message = "El campo no puede estar en blanco.")
     */
	private $usuario;

	// FPLUSS: Al JoinColumn le quité el "nullable=false" momentánemente porque da error en la persistencia en cascada. 
	/**
     * @ORM\ManyToOne(targetEntity="Incidente", inversedBy="comentarios")
     * @ORM\JoinColumn(name="incidente_id", referencedColumnName="id")
	 * @Assert\NotNull(message = "El campo no puede estar en blanco.")
     */
    private $incidente;

	/**
     * @ORM\OneToMany(targetEntity="Adjunto", mappedBy="comentario")
	 * @ORM\JoinColumn(name="adjunto_id", referencedColumnName="id", nullable=true)
	 * @Assert\NotNull(message = "El campo no puede estar en blanco.")
     */
	protected $adjuntos;
	
    /**********************************
     * __toString()
     *
     * Este método sirve para poder popular los comboboxes en los forms.
     *********************************/ 
	 public function __toString()
	{
		return $this->getComentario();
	}	
	
	/**********************************
     * __construct
     *
     * 
     **********************************/
    public function __construct()
    {
        $this->adjuntos = new \Doctrine\Common\Collections\ArrayCollection();
		$date = new \DateTime('NOW'); 
		$this->setFechaCreacion($date);
    }	
	
    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set comentario
     *
     * @param string $comentario
     * @return Comentario
     */
    public function setComentario($comentario)
    {
        $this->comentario = $comentario;
    
        return $this;
    }

    /**
     * Get comentario
     *
     * @return string 
     */
    public function getComentario()
    {
        return $this->comentario;
    }

    /**
     * Set fechaCreacion
     *
     * @param \DateTime $fechaCreacion
     * @return Comentario
     */
    public function setFechaCreacion($fechaCreacion)
    {
        $this->fechaCreacion = $fechaCreacion;
    
        return $this;
    }

    /**
     * Get fechaCreacion
     *
     * @return \DateTime 
     */
    public function getFechaCreacion()
    {
        return $this->fechaCreacion;
    }

    /**
     * Set usuario
     *
     * @param \CHOMP\SGIBundle\Entity\Usuario $usuario
     * @return Comentario
     */
    public function setUsuario(\CHOMP\SGIBundle\Entity\Usuario $usuario = null)
    {
        $this->usuario = $usuario;
    
        return $this;
    }

    /**
     * Get usuario
     *
     * @return \CHOMP\SGIBundle\Entity\Usuario 
     */
    public function getUsuario()
    {
        return $this->usuario;
    }

    /**
     * Set incidente
     *
     * @param \CHOMP\SGIBundle\Entity\Incidente $incidente
     * @return Comentario
     */
    public function setIncidente(\CHOMP\SGIBundle\Entity\Incidente $incidente = null)
    {
        $this->incidente = $incidente;
    
        return $this;
    }

    /**
     * Get incidente
     *
     * @return \CHOMP\SGIBundle\Entity\Incidente 
     */
    public function getIncidente()
    {
        return $this->incidente;
    }
    
    /**
     * Add adjuntos
     *
     * @param \CHOMP\SGIBundle\Entity\Adjunto $adjuntos
     * @return Comentario
     */
    public function addAdjunto(\CHOMP\SGIBundle\Entity\Adjunto $adjuntos)
    {
        $this->adjuntos[] = $adjuntos;
    
        return $this;
    }

    /**
     * Remove adjuntos
     *
     * @param \CHOMP\SGIBundle\Entity\Adjunto $adjuntos
     */
    public function removeAdjunto(\CHOMP\SGIBundle\Entity\Adjunto $adjuntos)
    {
        $this->adjuntos->removeElement($adjuntos);
    }

    /**
     * Get adjuntos
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getAdjuntos()
    {
        return $this->adjuntos;
    }
}